/* 
 * File:   Producto.cpp
 * Author: david
 * 
 * Created on September 19, 2012, 11:04 PM
 */

#include "Producto.h"

Producto::Producto(string mar, string ID, bool modo) 
{
    marca = mar;
    id = ID;
    contenedor = modo;
    if(modo)
    {
        productos = new Pila<Producto>();
        this->aumentar(1);
    }
    else
        productos = NULL;
}

Producto::Producto(const Producto& orig) {
}

Producto::~Producto() {
    delete productos;
}

void Producto::setId(string id) {
    this->id = id;
}

string Producto::getId() const {
    return id;
}

void Producto::setMarca(string marca) {
    this->marca = marca;
}

string Producto::getMarca() const {
    return marca;
}

string Producto::toString()
{
    if(contenedor && productos != NULL)
        return productos->toString();
    return "\t\tMarca: " + marca + "\n\t\tID: " + id + "\n";
}

void Producto::push(Producto *p)
{
    if(productos != NULL)
        productos->push(p);
}

Producto* Producto::pop()
{
    if(productos != NULL)
        return productos->pop();
    return NULL;
}

void Producto::setContenedor(bool contenedor) {
    this->contenedor = contenedor;
}

bool Producto::isContenedor() const {
    return contenedor;
}

int Producto::getCantidad()
{
    if(productos!=NULL)
        return productos->getCantidad();
    return 0;
}

void Producto::aumentar(int cant)
{
    if(contenedor)
    {
        for(int i=0;i<cant;i++)
        {
            Producto *aux = new Producto(marca, id, false);
            productos->push(aux);
        }
    }
}

bool Producto::operator == (string idmar)
{
    return id == idmar || marca == idmar;
}

Pila<Producto>* Producto::getProductos(){

return productos;


}